//
//  HMHomeTableViewController.swift
//  MyWeibo
//
//  Created by apple on 16/4/16.
//  Copyright © 2016年 apple. All rights reserved.
//

import UIKit

class HMHomeTableViewController: HMVisitorViewController {
    
    
    // 当前控制器对应的ViewModel
    private lazy var statusListViewModel: HMStatusListViewModel = HMStatusListViewModel()
    
    //设置重用标识符
    let HMStatusCellId = "HMStatusCellId"
    
    //用户没有登录的话就显示访客视图，登录过的话就显示tableview
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !userLogon{
            
            VisitorView.setVisitorInfo(nil, message: nil)
            
            return
        }
        
        //设置成功加载ui
        setupUI()
        //加载数据
        loadData()
    }
    //注册cell
    func setupUI(){
        
        tableView.registerClass(HMStatusCell.self, forCellReuseIdentifier: HMStatusCellId)
        //自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        //预估行高
        tableView.estimatedRowHeight = 250
        // 隐藏 tableView的分割线
        tableView.separatorStyle = .None
        // 设置tableView的背景色
        tableView.backgroundColor = UIColor(white: 180/255, alpha: 1)
        // 设置tableView的footerView
        tableView.tableFooterView = pullupView
        
        //讲控件添加到tableview上
        self.tableView.addSubview(hmRefreshControl)
        //添加刷新方法
        hmRefreshControl.addTarget(self, action: "loadData", forControlEvents: UIControlEvents.ValueChanged)
    }


    //加载数据
    func loadData() {
        
        //调用模型里面的方法加载数据
        statusListViewModel.loadData(pullupView.isAnimating()) { (isSuccess) -> () in
            
            
            if isSuccess {
                //刷新数据
                self.tableView.reloadData()
                
            }else{
                
                print("请求数据失败")
            }
            
            //停止刷新菊花
            self.endRefresh()
        }
    }
    
    //停止菊花转
    private func endRefresh(){
        
        pullupView.stopAnimating()
        self.refreshControl?.endRefreshing()
        hmRefreshControl.endRefreshing()
        
    }
    
    //懒加载菊花控件
    private lazy var pullupView:UIActivityIndicatorView = {
        
        let indicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
        
        //设置颜色
        indicatorView.backgroundColor = UIColor.orangeColor()
        
        //停止时候隐藏 测试使用
        indicatorView.hidesWhenStopped = true
        
        return indicatorView
    }()
    
    //初始化懒加载控件
    private lazy var hmRefreshControl : HMRefreshControl = HMRefreshControl()
}


//实现代理方法
extension HMHomeTableViewController {
    
    
    //在加载cell的时候回调用的方法
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        
        //判断是否加载到最后一个cell
        if indexPath.row == statusListViewModel.statusArray!.count - 1 && !pullupView.isAnimating(){
            
            //转菊花
            pullupView.startAnimating()
            //加载数据
            loadData()
        }
    }
    
    
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return statusListViewModel.statusArray?.count ?? 0;
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier("HMStatusCellId", forIndexPath: indexPath) as! HMStatusCell
        
        cell.statusViewModel = statusListViewModel.statusArray![indexPath.row]
        
        return cell
    }
    
}
